//数字金字塔
#include <iostream>
using namespace std;
const int MAXR=1000;
int r;
int a[MAXR+1][MAXR+1];
int maxsum[MAXR+1][MAXR+1];

int main(){
    cin>>r;
    for(int i=1;i<=r;i++)
        for(int j=1;j<=i;j++)
            cin>>a[i][j];
    //动规
    maxsum[1][1]=a[1][1];
    for(int i=2;i<=r;i++)
        for(int j=1;j<=i;j++) 
            if (j>1) //当j>1时，取maxsun上一行前一列的值与上一行当前列的值比较，用较大的加上a[i][j]
                maxsum[i][j]=max(maxsum[i-1][j-1],maxsum[i-1][j])+a[i][j];
            else //当j=1时，只有一种可能。即maxsum上一行当前列的值加上a[i][j]
                maxsum[i][j]=maxsum[i-1][j]+a[i][j];
    int ans=0;
    for(int j=1;j<=r;j++) if (maxsum[r][j]>ans) ans=maxsum[r][j];
    cout<<ans;
}
